package com.example.neosoft.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.example.neosoft.connection.ConnectionFactory;
import com.example.neosoft.model.Usuario;

public class UsuarioDAO {

	private Connection connection;

	public UsuarioDAO() {
		super();
		connection = new ConnectionFactory().getConnection();
	}

	public UsuarioDAO(Connection connection) {
		super();
		this.connection = connection;
	}

	public List<Usuario> getLista() {
		List<Usuario> lista = new ArrayList<Usuario>();
		PreparedStatement pstmt;
		try {
			pstmt = this.connection.prepareStatement("select * from Usuario");
			ResultSet rs = pstmt.executeQuery();
			while (rs.next()) {
				Usuario usuario = new Usuario();
				usuario.setCodUsuario(rs.getInt("cod_usuario"));
				usuario.setNome(rs.getString("nome"));
				usuario.setPontuacao(rs.getFloat("pontuacao"));
				usuario.setNivel(rs.getInt("nivel"));
				usuario.setSenha(rs.getString("senha"));
				lista.add(usuario);
			}
			rs.close();
			pstmt.close();
			return lista;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	public void adicionar(String nome, String senha) {
		CallableStatement cs;
		try {
			cs = connection.prepareCall("{call sp_adiciona_usuario(?,?)}");
			cs.setString("nome", nome);
			cs.setString("senha", senha);
			cs.execute();
			cs.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

}
